﻿namespace UnityEngine
{
    using System;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    public sealed class ADBannerView
    {
        private IntPtr iAdWrapper;

        public ADBannerView()
        {
            this.InitWrapper();
        }

        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void CancelAction();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        private extern void Destroy();
        ~ADBannerView()
        {
            this.Destroy();
        }

        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public static extern Vector2 GetSizeFromSizeIdentifier(ADSizeIdentifier identifier);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void Hide();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void InitWrapper();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        private extern void INTERNAL_get_position(out Vector2 value);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        private extern void INTERNAL_set_position(ref Vector2 value);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void Show();

        public bool actionInProgress { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public ADPosition autoPosition { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] set; }

        public bool autoSize { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] set; }

        public ADSizeIdentifier currentSizeIdentifier { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] set; }

        public ADError error { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public bool loaded { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }

        public Vector2 position
        {
            get
            {
                Vector2 vector;
                this.INTERNAL_get_position(out vector);
                return vector;
            }
            set
            {
                this.INTERNAL_set_position(ref value);
            }
        }

        public ADSizeIdentifier[] requiredSizeIdentifiers { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] set; }

        public bool visible { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; }
    }
}

